<?php
/**
 * Application model for CakePHP.
 *
 * This file is application-wide model file. You can put all
 * application-wide model-related methods here.
 *
 * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
 * Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 *
 * Licensed under The MIT License
 * For full copyright and license information, please see the LICENSE.txt
 * Redistributions of files must retain the above copyright notice.
 *
 * @copyright     Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
 * @link          http://cakephp.org CakePHP(tm) Project
 * @package       app.Model
 * @since         CakePHP(tm) v 0.2.9
 * @license       http://www.opensource.org/licenses/mit-license.php MIT License
 */

// App::uses('Model', 'Model');
App::uses('SimplePasswordHasher', 'Controller/Component/Auth');

/**
 * Application model for Cake.
 *
 * Add your application-wide methods in the class below, your models
 * will inherit them.
 *
 * @package       app.Model
 */
class User extends AppModel {

    public $validate = array(
        'name' => array(
            'Username is unique' => array(
                'rule' => 'isUnique',
                'required' => true,
                'allowEmpty' => false,
                'message' => 'This username has been existed'
            ),
            'Min-max length' => array(
                'rule' => array('between', 6, 20),
                'required' => true,
                'allowEmpty' => false,
                'message' => 'Username must between 6 and 20 characters'
            )
        ),
        'email' => array(
            'Email is unique' => array(
                'rule' => 'isUnique',
                'required' => true,
                'allowEmpty' => false,
                'message' => 'This email has been existed'
            )            
        ),
        'password' => array(
            'required' => array(
                'rule' => array('notEmpty'),
                'message' => 'A password is required'
            )
        )
    );


    public $hasMany = array(
        'Post' => array(
            'className' => 'Post',
            'foreignKey' => 'user_id',
            'order' => 'Post.id DESC',
            'limit' => '10',
            'dependent' => true
        )
    );

    function hashPassword($data){
        if(isset($this->data['User']['password'])){
            $this->data['User']['password'] = Security::hash($this->data['User']['password'],NULL,TRUE);
            return $data;
        }
        return $data;
    }

    public function beforeSave($options = array()) {
        $this->hashPassword(NULL, TRUE);
        return true;
    }

}